/***********************************************************************************
 * 文件名： polsys_config.h
 * 版本： 4
 * 说明：
 * 		polsys 的配置文件。此文件可以当作通用头文件，可以在这里添加一些顶级宏定义。
 * 修改记录：
 * 	2021/04/28: 初版。 刘言。
 *  2021/05/19: 兼容polsys和polsys_lite
 *  2021/05/20: 
 *      去掉SYSTICK定时周期设置，由用户调用Polsys_Tick的周期决定，建议为1ms，否则某些组件可
 *  能会运行出错。刘言。
 *  2021/11/15: 
 * 		定义 _POLSYS_DEBUG 后可以查看CPU使用率、是否过载等调试信息，每个TICK周期更新，过载
 * 	表示在一个TICK周期内不能执行完所有任务，一旦置位复位才能清除。
 * 		增加 _POLSYS_DEBUG 需要的API配置项。
 *      增加 POLSYS_TICK_CYCLE 配置项，此配置项不会影响实际TICK周期，用户如实配置其调用 
 *  Polsys_Tick 的周期，作用是留给需要的组件引用。
***********************************************************************************/
#ifndef _POLSYS_CONFIG_H_
#define _POLSYS_CONFIG_H_

// 驱动和组件接口不用再包含头文件

#include "app.h"
#include "..\bsp\board.h"

#ifdef DEBUG
// 定义表示启用DEBUG功能，可以获得更多系统信息
#define _POLSYS_DEBUG
#endif

// 定义表明使用的是 POLSYS_LITE ，开发组件或驱动的开发者可以利用这个宏定义让组件或驱动兼容不同的运行环境。
// 不定义表示使用的是标准POLSYS
#define POLSYS_LITE

// TICK周期，单位ms. 不会影响实际TICK周期，用户如实配置其调用 Polsys_Tick 的周期，作用是留给需要的组件引用。
#define POLSYS_TICK_CYCLE       10       

// 定义MCU型号，这将会决定使用的MCU驱动包
#define POLSYS_MCU_MODEL    BSP_MCU_MODEL


#ifdef POLSYS_LITE
// 在这里添加需要循环一直执行的任务
#define _POLSYS_TASK_GROUP_LOOP \
{   \
    Wdt_Clear();\
}
// 在这里添加需要间隔 1 tick 执行的任务
#define _POLSYS_TASK_GROUP_1TICK  \
{\
    Btn_Loop();\
}
// 在这里添加需要间隔 10 tick 执行的任务，如果没有任务，注释掉define可以节省资源
#define _POLSYS_TASK_GROUP_10TICK \
{\
    App_Timer();\
}
// 在这里添加需要间隔100tick执行的任务，如果没有任务，注释掉define可以节省资源
// #define _POLSYS_TASK_GROUP_100TICK    \
// {\
// \
// }
// 在这里添加需要间隔1000tick执行的任务，如果没有任务，注释掉define可以节省资源
//#define _POLSYS_TASK_GROUP_1000TICK
#else
// 最大任务数，<=255，+1增加3字节内存
#define MAX_TASKS				20      
// 系统空闲。这里可以定义为空，也可以定义成一个函数入口，处理空闲时的任务。
// 提示：定义成让CPU停止等待中断的代码，可以降低运行时的功耗。
// 注意：耗时的代码将会影响其它任务的响应实时性。当一个TICK周期无法执行完所有任务时，这个宏不会被调用。
#define SYS_IDLE()			    
#endif





// 组件设置，注释掉表示不使用(仅不包含头文件，也可以自行包含头文件使用)

// #define POLSYS_USE_POLSYS_LIB
// #define POLSYS_USE_BMLITE
#define POLSYS_USE_BUTTON_CTRL_STATIC
// #define POLSYS_USE_CLED_CTRL_STATIC
// #define POLSYS_USE_RHC
// #define POLSYS_USE_SOFT_PWM
// #define POLSYS_USE_SOFT_UART
// #define POLSYS_USE_SOFT_FIFO
// #define POLSYS_USE_SWSD_STATIC
// #define POLSYS_USE_UMI_STATIC
// #define POLSYS_USE_UID_LOCK


// 需要的API设置

#ifdef _POLSYS_DEBUG
// 获取Tick定时器周期值，用于计算CPU使用率，无法获取时可以返回1
#define _Polsys_GetTickTimerCycleValue()     SYSTICK_VALUE
// 获取Tick定时器当前值（已经跑了多少），用于计算CPU使用率，无法获取时可以返回1.值可能大于655时需要确保返回的是u32否则u16即可。
#define _Polsys_GetTickTimerNowValue()       (SYSTICK_VALUE - SysTick->VAL)
#endif


#endif
